/*
  js是一门单线程的语言，这是因为它运行在浏览器的渲染线程中，而渲染线程只有一个。渲染主线程承担着诸多的工作，
    渲染页面，执行js都在其中运行
  
    如果使用同步的方式，就极有可能导致主线程产生阻塞，从而导致消息队列中的很多其他任务无法得到执行，这样一来，
    一方面会导致繁忙的主线程白白的消耗事件，另一方面导致页面无法及时更新，给用户造成卡死现象。

    所以浏览器采用异步的方式来避免。具体做法是当某些任务发生时，比如计时器，网络，事件监听，主线程将任务交给
    其他线程区处理，自身立即结束任务的执行，转而执行后续代码。当其他线程完成时，将事先传递的回调函数包装成任务，
    加入到消息队列的末尾排队，等待主线程调度执行。在这种异步模式下，浏览器永不阻塞，从而最大限度的保证了单线程的
    流畅运行。
*/

(function () {
  new Promise((resolve) => {
    setTimeout(() => {
      console.log(1);
      resolve(1);
    });
  }).then(() => {
    console.log(2);
  });
})();
